#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：data_filter-master 
@File ：load_config.py
@IDE  ：PyCharm 
@Author ：李涵彬
@Date ：2024/2/23 23:26 
"""

"""
该程序模块用于加载配置文件。用于加载JSON配置文件，以实现配置和程序分离。
"""

import json
from typing import Dict


def log_error(err_msg: str):
    """打印错误信息"""
    print(err_msg)


def load_config(filepath: str) -> Dict:
    """
    从 JSON 文件加载配置

    :参数 filename: 配置文件名
    :返回: 包含配置信息的字典
    """

    try:
        with open(filepath, "r") as file:
            config = json.load(file)
        return config

    except FileNotFoundError:
        log_error(f"未找到配置文件'{filepath}'")
        return {}

    except json.JSONDecodeError:
        log_error(f"解析配置文件'{filepath}'中的JSON时发生错误")
        return {}


# 示例用法
if __name__ == "__main__":
    config_filename = "../config/tmp_config.json"
    config = load_config(config_filename)
    print("Loaded config:")
    print(config)

    # 同样，可以在其他程序中调用config.py，读取json配置文件，做到配置和程序分离
    import config

    # 加载配置
    config_data = config.load_config("../config/tmp_config.json")

    # 使用配置
    port = config_data.get("port", 12345)
    database_config = config_data.get("database", {})
    db_host = database_config.get("host", "localhost")
    db_user = database_config.get("user", "root")
    db_password = database_config.get("password", "")
    db_database = database_config.get("database", "test")
    print(
        f"Connecting to database at {db_host} with credentials: {db_user}, {db_password}, {db_database}"
        f"Using config: port={port}, db_host={db_host}, db_user={db_user}, db_password={db_password}, db_database={db_database}"
    )

    # 同时，可以直接传递字典地址作为参数列表，整个代码更加整洁
    config_data = config.load_config("../config/tmp_config.json")

    def tmp_func(port="666", database=None):
        print(port)
        print(database)

    tmp_func(**config_data)
